package com.bicon.botu.mall.goods.controller;

import com.bicon.botu.mall.goods.service.IProductServiceV2;
import com.bicon.botu.core.base.common.controller.BaseController;
import com.bicon.botu.core.base.common.entity.BaseResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;

/**
 * <p>
 * 后台商品管理
 * </p>
 *
 * @author tao.zeng.
 * @since 2018/3/16.
 */
@RestController
@RequestMapping("/V2.0.0/controller/product")
public class ProductControllerV2 extends BaseController {

    // 1. 添加商品 通用信息
    // 2. 添加商品 详细描述
    // 3. 添加商品 商品属性
    // 4. 添加商品 商品相册
    // 5. 添加商品 其他信息
    // 6. 添加商品 关联地区
    // 7. 添加商品 启用定制

    @Autowired
    private IProductServiceV2 productServiceV2;

    /**
     * 添加商品信息
     * <p> 基本信息</p>
     *
     * @param saveOrUpdate     操作类型 1 保存 2 修改
     * @param productId        商品id
     * @param productCode      商品编号
     *
     * <p> 通用信息 </p>
     * @param productType      商品类型  1 定制商品 2 非定制商品
     * @param classify         分类Id
     * @param brandId          品牌Id
     * @param supplier         供货商
     * @param buyingPrice      进货价
     * @param productName      商品名
     * @param label            标签
     *
     * <p>详细描述</p>
     * @param details          详细描述 <p>描述</p>
     *
     * <p>商品属性</p>
     * @param productAttr      商品属性 sku 信息 json
     *                         [{"productNum":"0","price":"0","picture":"http://192.168.10.34:1111/BOTU/mall/productImage/n/20180316/9160f9a6bcb34d45b2447510bfd9f697.png","productArrId1":"4b5b525aa3514ac496bcf429d0776e13","productArrId2":"885412ea32dd4f0db3da64dbee8a3dff","skuName":"颜色:红,尺码:l"}]
     *
     * <p>商品相册</p>
     * @param pictureStr       图片地址json
     *                         [{"productUrl":"http://192.168.10.34:1111/BOTU/mall/productImage/n/20180316/20525aac4f4148e08dfc2d607a947aef.png"}]
     *
     * <p>其他信息</p>
     * @param weight           重量
     * @param volume           体积
     * @param invoiceType      发票类型（0无需发票，1普通发票，2电子发票）
     * @param noticeNum        警告数量
     * @param upShelves        是否上架（1未上架，0上架）
     * @param isProduct        是否作为商品（0否，1是）
     * @param isFreeFreight    是否免运费(1免运费，其它uuid为运费模板id)
     * @param logisticsType    物流商
     *
     * <p>关联地区</p>
     * @param region           销售区域
     *
     * <p>启用定制</p>
     * @param posterPicture    定制商品海报图片
     * @param isOnBefore       是否启用前身文字
     * @param isOnAfter        是否启用后身文字定义
     * @param beforeText       前身文字数量
     * @param afterText        后身文字数量
     * @param isEnableTrace    是否启用微量元素自定义
     * @param trancePlanIdJson 定制方案id json集合
     * @param planCode         定制方案code
     * @param suitCrowd        适用人群
     * @param element          定制元素
     * @return
     */
    @PostMapping("/saveOrUpdate")
    public BaseResult saveOrUpdate(@RequestParam String saveOrUpdate, @RequestParam(required = false) String productId, @RequestParam String productCode,
                                   String productType, String classify, String brandId, @RequestParam(required = false) String supplier, BigDecimal buyingPrice, String productName, @RequestParam(required = false) String label,
                                   String details,
                                   @RequestParam(required = false) String productAttr,
                                   String pictureStr,
                                   @RequestParam(required = false, defaultValue = "0") Double weight, @RequestParam(required = false, defaultValue = "0") Double volume, @RequestParam(required = false, defaultValue = "0") Integer invoiceType, Integer noticeNum, String upShelves, String isProduct, String isFreeFreight, String logisticsType,
                                   @RequestParam(required = false) String region,
                                   @RequestParam(required = false) String isOnBefore, @RequestParam(required = false) String isOnAfter, @RequestParam(required = false) Integer beforeText, @RequestParam(required = false) Integer afterText, @RequestParam(required = false) String isEnableTrace, @RequestParam(required = false) String trancePlanIdJson,
                                   @RequestParam(required = false) String posterPicture, @RequestParam(required = false) String planCode, @RequestParam(required = false) String suitCrowd, @RequestParam(required = false) String element) {

        String userId = "";//getUserId();

        boolean result = productServiceV2.addProduct(userId, saveOrUpdate, productId, productCode, productType, classify, brandId, supplier,
                buyingPrice, productName, label, details, productAttr, pictureStr, weight, volume, invoiceType,
                noticeNum, upShelves, isProduct, isFreeFreight, logisticsType,
                region, posterPicture, isOnBefore, isOnAfter, beforeText, afterText, isEnableTrace, trancePlanIdJson, planCode, suitCrowd, element);

        return result ? sendResult200() : sendResult400();
    }
}
